/**
 * 文件名：****.java
 * 版权：Copyright Lightkit All Rights Reserved.
 * 描述：*****
 */
package com.lightkits.wms.domain.allotmanagementpc;

import com.lightkits.framework.common.model.IResult;
import com.lightkits.wms.dto.allotmanagementpc.model.ExecuteLinePcDto;
import com.lightkits.wms.dto.allotmanagementpc.model.RequestHeaderPcDto;
import com.lightkits.wms.dto.allotmanagementpc.model.RequestLinePcDto;
import com.lightkits.wms.dto.allotmanagementpc.model.RequestValueDto;
import org.springframework.transaction.annotation.Transactional;

import java.util.List;

/**
 * @author 魏静
 * @create 2019-07-23 10:22
 * @desc 调拨管理平台
 **/

public interface AllotManagementPcService {
    /**
     * 领料单参数校验
     *
     * @param headerPcDto 领料单头参数
     * @param linePcDtos  领料单行参数
     * @return IResult
     */
    IResult checkParams(RequestHeaderPcDto headerPcDto,
                        List<RequestLinePcDto> linePcDtos);

    /**
     * 调拨管理平台
     *
     * @param headerPcDto      领料单头参数
     * @param linePcDtos       领料单行参数
     * @param splitRequestFlag 是否分批
     * @return IResult
     */
    IResult allotManagementPc(RequestHeaderPcDto headerPcDto,
                              List<RequestLinePcDto> linePcDtos,
                              Boolean splitRequestFlag);


    /**
     * 执行表加值
     *
     * @param exeLineDtos      执行行参数
     * @param requestValueDtos 请求行参数
     * @return IResult
     */
    IResult allotExecute(List<ExecuteLinePcDto> exeLineDtos,
                         List<RequestValueDto> requestValueDtos);

    /**
     * 参数校验
     *
     * @param exePcDtos 执行行参数
     * @param valueDtos 请求行参数
     * @return IResult
     */
    IResult checkExeParams(List<ExecuteLinePcDto> exePcDtos,
                           List<RequestValueDto> valueDtos);

    /**
     * 取消领料单状态
     *
     * @param cancelRequestHeaderId 取消领料单头
     */
    void cancelRequest(String cancelRequestHeaderId);
}
